package com.whosly.mysql.protocol.config;

/**
 * MySQL protocol 配置
 *
 * @author fengyang
 * @date 2023/7/13 上午10:34
 * @see <a href="yueny09@163.com">mailTo: yueny09@163.com</a>
 */
public class MySQLProtocolConfig
{

    /**
     * 在响应协议里， 是否输出真实执行的sql。
     *
     * true 输出
     * false   不输出
     */
    public static final boolean isPacketRespPrintlnExecSql = false;

    /**
     * 是否额外输出其他信息
     *
     * true 输出
     * false   不输出
     */
    public static final boolean isOutputExtraInfo = true;

    /**
     * Protocol version is always 0x0A.
     */
    public static final int PROTOCOL_VERSION = 0x0A;

    /**
     * 83, utf8
     */
    public static final int DEFAULT_CHARSET_INDEX= 83;
    public static final String DEFAULT_CHARSET = "utf8";
    // CharsetUtil.getCharset(DEFAULT_CHARSET_INDEX);

    /**
     * fixedSeed, 6个字节
     */
    public static final String fixedSeed = "CLYWNn86";

    /**
     * restOfScrambleBuff, 12个字节
     */
    public static final String restOfScrambleBuff = "nnwAN816Omyh";

    /**
     * 默认的最大连接数.
     *
     * 0 不做限制
     */
    public static final int defaultMaxConnections = 20000;

    /**
     * ANY_USERS 所有用户维度(不包含内置用户)限制的最大连接数
     *
     * 0 不做限制
     */
    public static final int maxConnectionsAnyUsers = 5000;

    /**
     * job任务时提交的最大数量
     */
    public static final int DEFAULT_MAX_ROW_IN_JOB = 100;

    /**
     * mysql 连接的默认超时时间。
     *
     * 4小时, 4 * 60 * 60L
     * 小于0时， 连接永不超时
     */
    public static final long connectionTimeoutSecond = -1;

    /**
     * 默认的对外mysql协议端口。 实际运行中以 MySQLServerRuntimeConfig 为准
     */
    public static final int DEFAULT_MYSQL_PROTOCOL_PORT = 3306;

    /**
     * 过载保护
     */
    public static final int DEFAULT_MYSQL_PROTOCOL_PACKET_INPUT_MAX_SIZE = 512 * 1024 * 1024;
}